#ifndef HESSIAN_H
#define HESSIAN_H

#include <valarray>
#include <vector>
#include "zadacha.h"
#include "struct.h"

std::vector<std::vector<double> > hess(std::valarray<double> w, double (*func)(std::valarray<double>,file_names& Fnames,input& data),
                                input& data, file_names& Fnames);

std::valarray<double> gradient(std::valarray<double> w, double (*func)(std::valarray<double>,file_names& Fnames,input& data),
                                input& data, file_names& Fnames);

std::valarray<double> product_mv(std::vector<std::vector<double> >  matr, std::valarray<double> vect);

double product_vec(std::valarray<double> vec1, std::valarray<double> vec2);

#endif /*HESSIAN_H*/